{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "## 4种常见异常检测方法：\n",
    "https://www.zhihu.com/question/38066650\n"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 孤立森林（Isolation Forest）\n",
    "### 是一种无监督学习算法，用于识别异常值\n",
    "其基本原理可以概括为一句话：异常数据由于数量较少且与正常数据差异较大，因此在被隔离时需要较少的步骤。\n",
    "\n",
    "有两个假设：\n",
    "异常的值是非常少的（如果异常值很多，可能被识别为正常的）\n",
    "异常值与其他值的差异较大（这点也可以引出主要是全局上都为异常的异常，局部小异常可能发现不了，因为差异并不大）\n",
    "\n",
    "原文链接：https://blog.csdn.net/wzk4869/article/details/135706638"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-05-23T09:27:56.009601400Z",
     "start_time": "2024-05-23T09:27:54.944789300Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.ensemble import IsolationForest\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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iwIibyePbpyc+OapVq1atLddR5czOnnz5lV169aNtc2DBw9Ur169VM6cOZWDg4MqUKCAGjt2bJRbaJV6dltu165do32OGzduqK5duyovLy/l4OCgcuTIod5++201c+bMyDbff/+9qlq1qsqSJYtycnJS+fPnV1988YUKCQmJ8lxDhw5VuXLlUgaDIcbbycPDw1WWLFlUlSpVYn1tPj4+6s0331RKRT/GklLR356t1Ou9PzEd95eP4b1791S7du1U1qxZVfr06VVAQIA6efKkyps3b5ThCGLKqJRS+/fvV4CqVatWrMfiRc8/v88fzs7OKnfu3KpevXpq7ty56unTp9Fud/jwYdWkSZPI9zBv3ryqWbNmauvWrVHaxfYerl69WlWuXFm5uroqV1dXVahQIdW1a1d16tSpKM+xa9cu9c4776gMGTIoV1dXVaJEiSjjApnNZtW9e3eVLVs2pWlalH+PvHQLuVJKHTp0SAUEBKj06dOrdOnSqRo1akSOZfVcQj8jInXTlJJeVkIIkZIdPXqUUqVKsWDBAlq3bq13HCFSDemTI4QQKdysWbNInz49TZo00TuKEKmK9MkRQogUat26dRw/fpyZM2fSrVu3aPstCSFiJperhBAihfL29ubGjRsEBASwcOHCVwZ0FELEToocIYQQQtgl6ZMjhBBCCLskRY4QQggh7FKa63hstVq5du0aGTJkeO0J7oQQQghhG0opHjx4QM6cOTEY4neOJs0VOdeuXZM5TIQQQohU6sqVK+TOnTtebdNckfP87oQrV67IXCZCCCFEKhEaGoqXl1eC7jJMc0XO80tUGTNmlCJHCCGESGUS0tVEOh4LIYQQwi5JkSOEEEIIuyRFjhBCCCHskhQ5QgghhLBLUuQIIYQQwi7pWuT88ccf1K9fn5w5c6JpGj/++GOc22zfvp3SpUvj5OSEr68v8+fPT/acQgghhEh9dC1yHj16RMmSJZk6dWq82l+4cIG6detSo0YNjhw5Qs+ePenQoQObNm1K5qRCCCGESG10HSfn3Xff5d133413+xkzZuDj48P48eMBKFy4MLt27eLbb78lICAguWIKIYQQIhVKVYMB7t27F39//yjLAgIC6NmzZ4zbhIWFERYWFvlzaGhocsXTTWhoKIsWLWL37t2YzWaKFi3Kxx9/HO9hr4UQQgh7lKo6HgcHB+Ph4RFl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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 随机生成50个数据点\n",
    "np.random.seed(42)  # 为了结果的可重复性设置随机种子\n",
    "X = np.random.rand(50, 2)  # 2维数据\n",
    "\n",
    "# 初始化Isolation Forest模型\n",
    "iso_forest = IsolationForest(random_state=42, contamination=0.1)\n",
    "\n",
    "# 训练模型\n",
    "iso_forest.fit(X)\n",
    "\n",
    "# 预测每个点的异常分数\n",
    "scores = iso_forest.decision_function(X)\n",
    "\n",
    "# 将异常分数转换为0（正常）和1（异常）的标签\n",
    "labels = iso_forest.predict(X)\n",
    "\n",
    "# 绘制数据点和异常点\n",
    "plt.scatter(X[:, 0], X[:, 1], c=labels, cmap=plt.cm.bwr, edgecolor='k', s=50)\n",
    "plt.title('Isolation Forest Anomaly Detection')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-05-23T09:27:58.834095300Z",
     "start_time": "2024-05-23T09:27:58.514951700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[0.37454012, 0.95071431],\n       [0.73199394, 0.59865848],\n       [0.15601864, 0.15599452],\n       [0.05808361, 0.86617615],\n       [0.60111501, 0.70807258],\n       [0.02058449, 0.96990985],\n       [0.83244264, 0.21233911],\n       [0.18182497, 0.18340451],\n       [0.30424224, 0.52475643],\n       [0.43194502, 0.29122914],\n       [0.61185289, 0.13949386],\n       [0.29214465, 0.36636184],\n       [0.45606998, 0.78517596],\n       [0.19967378, 0.51423444],\n       [0.59241457, 0.04645041],\n       [0.60754485, 0.17052412],\n       [0.06505159, 0.94888554],\n       [0.96563203, 0.80839735],\n       [0.30461377, 0.09767211],\n       [0.68423303, 0.44015249],\n       [0.12203823, 0.49517691],\n       [0.03438852, 0.9093204 ],\n       [0.25877998, 0.66252228],\n       [0.31171108, 0.52006802],\n       [0.54671028, 0.18485446],\n       [0.96958463, 0.77513282],\n       [0.93949894, 0.89482735],\n       [0.59789998, 0.92187424],\n       [0.0884925 , 0.19598286],\n       [0.04522729, 0.32533033],\n       [0.38867729, 0.27134903],\n       [0.82873751, 0.35675333],\n       [0.28093451, 0.54269608],\n       [0.14092422, 0.80219698],\n       [0.07455064, 0.98688694],\n       [0.77224477, 0.19871568],\n       [0.00552212, 0.81546143],\n       [0.70685734, 0.72900717],\n       [0.77127035, 0.07404465],\n       [0.35846573, 0.11586906],\n       [0.86310343, 0.62329813],\n       [0.33089802, 0.06355835],\n       [0.31098232, 0.32518332],\n       [0.72960618, 0.63755747],\n       [0.88721274, 0.47221493],\n       [0.11959425, 0.71324479],\n       [0.76078505, 0.5612772 ],\n       [0.77096718, 0.4937956 ],\n       [0.52273283, 0.42754102],\n       [0.02541913, 0.10789143]])"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-05-23T09:28:00.740555Z",
     "start_time": "2024-05-23T09:28:00.716872800Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
